home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / AOCE Sample Code / PowerTalk Access Modules / Sample SMSAM / SampleSMSAM Source / BuildingBlocks / DebugFlag.cp < prev    next >
Encoding:
Text File  |  1995-07-28  |  2.2 KB  |  113 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        DebugFlag.cp
  3.  
  4.     Copyright:    © 1991-1994 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Part of the AOCE Sample SMSAM Package.  Consult the license
  8.     which came with this software for your specific legal rights.
  9.  
  10. */
  11.  
  12.  
  13.  
  14. #ifndef __MEMORY__
  15. #include "Memory.h"
  16. #endif
  17.  
  18. #ifndef __RESOURCES__
  19. #include <Resources.h>
  20. #endif
  21.  
  22. #ifndef __DEBUGFLAG__
  23. #include "DebugFlag.h"
  24. #endif
  25.  
  26. #ifndef __FOLDERS__
  27. #include "Folders.h"
  28. #endif
  29.  
  30. extern short    gBovineServerPrefsFile;            //use common prefs file
  31. extern short    OpenApplicationPreferencesFile(void);
  32.  
  33. #pragma segment TDebugFlag
  34.  
  35. TDebugFlag::TDebugFlag(short resourceID, OSType resourceType) {
  36.  
  37.     short savedResFile = CurResFile();
  38.     if ( gBovineServerPrefsFile == 0 )
  39.         gBovineServerPrefsFile = OpenApplicationPreferencesFile();
  40.     fResFileNum = gBovineServerPrefsFile;
  41.     UseResFile(fResFileNum);
  42.  
  43.     fData = Get1Resource (resourceType, resourceID);
  44.  
  45.     if (fData == nil) {
  46.         fData = FAILNewHandleClear(64);
  47.         AddResource (fData, resourceType, resourceID, "\p");
  48.         WriteResource (fData);
  49.     }
  50.  
  51.     HNoPurge(fData);
  52.     UseResFile (savedResFile);
  53. }
  54.  
  55. void TDebugFlag::ClearFlag ( short flag )
  56. {
  57.     SetFlag ( flag, false );
  58. }
  59.  
  60. Boolean TDebugFlag::Flag (short flag) const {
  61.     if (fData && (flag >= 0) && (flag <= GetHandleSize(fData))) {
  62.         return ( ((const char*) *fData)[flag] != false);
  63.     }
  64.     return false;
  65. }
  66.  
  67. Boolean TDebugFlag::SetFlag (short flag, Boolean newValue) {
  68.  
  69.     if (fData && (flag >= 0) && (flag <= GetHandleSize(fData))) {
  70.         Boolean    oldValue = (((char*) *fData)[flag] != false);
  71.         ((char*) *fData)[flag] = (newValue != false);
  72.  
  73.         short savedResFile = CurResFile();
  74.         UseResFile(fResFileNum);
  75.         ChangedResource (fData);
  76.         WriteResource(fData);
  77.  
  78.         UseResFile (savedResFile);
  79.  
  80.         return oldValue;
  81.     } else
  82.         return false;
  83. }
  84.  
  85. inline void TDebugFlag::ClearAll(void) {
  86.     if (fData) {
  87.         for (short i = 0; i < GetHandleSize(fData); i++)
  88.             ((char*) *fData)[i] = 0;
  89.  
  90.         short savedResFile = CurResFile();
  91.         UseResFile(fResFileNum);
  92.  
  93.         ChangedResource (fData);
  94.         WriteResource(fData);
  95.  
  96.         UseResFile (savedResFile);
  97.     }
  98. }
  99.  
  100. TDebugFlag::~TDebugFlag() {
  101.     if (fData) {
  102.         short savedResFile = CurResFile();
  103.         UseResFile(fResFileNum);
  104.  
  105.         ChangedResource (fData);
  106.         WriteResource(fData);
  107.  
  108.         UseResFile (savedResFile);
  109.  
  110.         ReleaseResource(fData);
  111.     }
  112. }
  113.